def minCostClimbingStairs(cost):
    """
    计算达到楼梯顶部的最低花费。
    :param cost: List[int], 表示每个台阶的费用。
    :return: int, 最低花费。
    """
    n = len(cost)
    if n == 0:
        return 0
    if n == 1:
        return cost[0]
    
    # 初始化 dp 数组
    dp = [0] * n
    dp[0] = cost[0]
    dp[1] = cost[1]
    
    # 动态规划填充 dp 数组
    for i in range(2, n):
        dp[i] = cost[i] + min(dp[i-1], dp[i-2])
    
    # 到达顶部的最低花费是 min(dp[n-1], dp[n-2])
    return min(dp[n-1], dp[n-2])